#ifndef _APIPUERTACAMION_H_
#define _APIPUERTACAMION_H_

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include "../common.h"
// Bibliotecas IPC
#include <sys/types.h>
#include <unistd.h>
// Clases propias
#include "../IPC/Semaphore/Semaphore.h"
#include "../IPC/SharedMemory/ControlDataSharedMemory.h"
#include "../IPC/MessageQueue/TruckDoorInputMessageQueue.h"
#include "../IPC/MessageQueue/TruckDoorOutputMessageQueue.h"
#include "../IPC/MessageQueue/ChargeToTruckMessageQueue.h"

class APIPuertaCamion {

private:
	Semaphore semTruckDoor;
	Semaphore semTruck;
	Semaphore semControl;
	ControlDataSharedMemory shMem;

	// Comunicación con las Personas
	TruckDoorInputMessageQueue truckDoorInputQueue;
	TruckDoorOutputMessageQueue truckDoorOutputQueue;
	
	// Cola donde la API va dejando a las personas para que luego el camión
	// las vaya subiendo
	ChargeToTruckMessageQueue chargeToTruckQueue;
	
	// Buffer para escribir mensajes tanto para enviar, como para mostrar
	// por pantalla
	char buffer[255];

public:

	//
	APIPuertaCamion();

	//
	virtual ~APIPuertaCamion();

	// 
	long recibirPersona(int nroPuerta, int *error);
	
	//
	void reservarEspacioParaUnaPersona(int nroPuerta, long idPersona, int *error);
};

#endif
	
	 
  
